Modern data networks rely on a variable size packet transport network to interconnect the various network elements. Packet switching devices are required to route a packet through a network from a source to a destination. Typically a switching device has a plurality of ports. Data packets arrive through one of the ports and are routed out one or a plurality of ports.
A switching device, having a plurality of input and output ports, is required to support transporting variable sized packets from inputs to outputs while maintaining packet ordering within a flow. A flow is defined as a stream of packets arriving from one specific source to one destination. It is desirable that a switching device be scalable such that more inputs and outputs may be added, preferably while it is operating, while maintaining the same performance properties.
A scalable switching device can be separated into three parts: an ingress controller, an interconnect network, and an egress controller. Typically the ingress controller segments variable sized packets into fixed size cells. The cells are then routed through the interconnect network to the designated output. The egress controller then reassembles the cells into packets and reorders the packets to recover the ingress order.
A scalable interconnect network, referred to as a fabric, may be a multi-stage network where multiple paths exist from ingress to egress. In this case two categories of routing cells from input to output may be defined. Static Routing (SR) refers to a method where a path through the fabric is pre-determined for each flow. Dynamic Routing (DR) refers to a method where cells of a flow may take different paths. The advantage of SR is that cells arrive at the output in order per flow. However, significant inefficiencies result from blocking, where one flow happens to select the same fabric link as another and by doing so oversubscribing the link capacity. Accordingly, dynamic routing (DR) is a preferred method for routing cells. DR greatly reduces the blocking problem. However, cells from a flow may arrive misordered and interleaved with cells from other flows.
The problem of misordering may be divided into two parts. First, flow cell reordering, and second whole packet reassembly and reordering. Typically, each problem was solved separately in dynamic routing fabrics.
Accordingly, what is needed is a system which solves these problems differently. The present invention addresses such a need.